﻿Imports ClasesRestaurante
Public Class FormAdmClientes

    Private metodosClientes As New Cliente("", "", "", "", Today())

    Private Sub FormAdmClientes_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Limpiar()
        cargarCbo()
    End Sub

    Private Sub FormAdmClientes_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Limpiar()
        cargarCbo()
    End Sub

    'Actualiza o carga el combo box
    Private Sub cargarCbo()
        cboClientes.Items.Clear()
        For i As Integer = 0 To ClientesRestaurante.Keys.Count - 1
            cboClientes.Items.Add(ClientesRestaurante.Keys(i))
        Next
    End Sub

    Private Sub Limpiar()
        txtNombreCliente.Text = ""
        txtContraseñaCliente.Text = ""
        txtRepetirContraseña.Text = ""
        txtEmail.Text = ""
        txtTarjeta.Text = ""
        txtFechaCaducidad.Text = ""

        lblPHNombre.Visible = True
        lblPHContraseña.Visible = True
        lblPHRepetirContraseña.Visible = True
        lblPHEmail.Visible = True
        lblPHNumeroTarjeta.Visible = True
        lblPHFechaCaducidad.Visible = True

        'TODOOOOO HACER QUE EL COMBOBOX APAREZCA VACIO

        cboClientes.Focus()

    End Sub

    Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreCliente.GotFocus, txtContraseñaCliente.GotFocus, txtRepetirContraseña.GotFocus, txtEmail.GotFocus, txtTarjeta.GotFocus, txtFechaCaducidad.GotFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreCliente"
                lblPHNombre.Visible = False
            Case "txtContraseñaCliente"
                lblPHContraseña.Visible = False
            Case "txtRepetirContraseña"
                lblPHRepetirContraseña.Visible = False
            Case "txtEmail"
                lblPHEmail.Visible = False
            Case "txtTarjeta"
                lblPHNumeroTarjeta.Visible = False
            Case "txtFechaCaducidad"
                lblPHFechaCaducidad.Visible = False
        End Select

    End Sub
    Private Sub TextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreCliente.LostFocus, txtContraseñaCliente.LostFocus, txtRepetirContraseña.LostFocus, txtEmail.LostFocus, txtTarjeta.LostFocus, txtFechaCaducidad.LostFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreCliente"
                If textBox.Text.Length = 0 Then
                    lblPHNombre.Visible = True
                End If
            Case "txtContraseñaCliente"
                If textBox.Text.Length = 0 Then
                    lblPHContraseña.Visible = True
                End If
            Case "txtRepetirContraseña"
                If textBox.Text.Length = 0 Then
                    lblPHRepetirContraseña.Visible = True
                End If
            Case "txtEmail"
                If textBox.Text.Length = 0 Then
                    lblPHEmail.Visible = True
                End If
            Case "txtTarjeta"
                If textBox.Text.Length = 0 Then
                    lblPHNumeroTarjeta.Visible = True
                End If
            Case "txtFechaCaducidad"
                If textBox.Text.Length = 0 Then
                    lblPHFechaCaducidad.Visible = True
                End If
        End Select

    End Sub
    Private Sub label_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblPHNombre.MouseHover, lblPHContraseña.MouseHover, lblPHRepetirContraseña.MouseHover, lblPHEmail.MouseHover, lblPHNumeroTarjeta.MouseHover, lblPHFechaCaducidad.MouseHover

        Dim label = TryCast(sender, Label)

        Select Case label.Name
            Case "lblPHNombre"
                lblPHNombre.Visible = False
            Case "lblPHContraseña"
                lblPHContraseña.Visible = False
            Case "lblPHRepetirContraseña"
                lblPHRepetirContraseña.Visible = False
            Case "lblPHEmail"
                lblPHEmail.Visible = False
            Case "lblPHNumeroTarjeta"
                lblPHNumeroTarjeta.Visible = False
            Case "lblPHFechaCaducidad"
                lblPHFechaCaducidad.Visible = False
        End Select

    End Sub

    Private Sub btnNuevo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNuevo.Click

        Dim mensaje As String
        mensaje = metodosClientes.ComprobarCliente(txtNombreCliente.Text, txtContraseñaCliente.Text, txtRepetirContraseña.Text, txtEmail.Text, txtTarjeta.Text, txtFechaCaducidad.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        'Crear el cliente
        If ClientesRestaurante.ContainsKey(txtNombreCliente.Text) Then
            MessageBox.Show("Ese cliente ya existe", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtNombreCliente.Clear()
            txtNombreCliente.Focus()
            Exit Sub
        End If
        Dim cliente As New Cliente(txtNombreCliente.Text, txtContraseñaCliente.Text, txtEmail.Text, txtTarjeta.Text, txtFechaCaducidad.Text)
        ClientesRestaurante.Add(cliente.Nombre, cliente)
        Limpiar()
        cargarCbo()
        Me.Close()

    End Sub

    Private Sub btnModificar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        'Si no se a elegido una mesa...
        If cboClientes.SelectedItem Is Nothing Then
            MessageBox.Show("Tiene que seleccionar el cliente a modificar.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        Dim mensaje As String
        mensaje = metodosClientes.ComprobarCliente(txtNombreCliente.Text, txtContraseñaCliente.Text, txtRepetirContraseña.Text, txtEmail.Text, txtTarjeta.Text, txtFechaCaducidad.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        ClientesRestaurante.Remove(cboClientes.Text)

        Dim cliente As New Cliente(txtNombreCliente.Text, txtContraseñaCliente.Text, txtEmail.Text, txtTarjeta.Text, txtFechaCaducidad.Text)
        ClientesRestaurante.Add(cliente.Nombre, cliente)

        cargarCbo()
        Limpiar()
        'Llama a la funcion para guardar las modificaciones
        'GestionRestaurante.GrabarMesas(MesasRestaurante)


    End Sub

    Private Sub btnEliminar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        'Si no se a elegido una mesa...
        If cboClientes.SelectedItem Is Nothing Then
            MessageBox.Show("Tiene que seleccionar el cliente a modificar.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If
        ClientesRestaurante.Remove(cboClientes.Text)
        Limpiar()
        cargarCbo()
    End Sub

    'Cada vez que se elija una mesa, se escriben los datos 
    Private Sub cboClientes_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboClientes.SelectedIndexChanged
        txtNombreCliente.Text = ClientesRestaurante(cboClientes.Text).Nombre
        txtContraseñaCliente.Text = ClientesRestaurante(cboClientes.Text).Contraseña
        txtRepetirContraseña.Text = ClientesRestaurante(cboClientes.Text).Contraseña
        txtEmail.Text = ClientesRestaurante(cboClientes.Text).Email
        txtTarjeta.Text = ClientesRestaurante(cboClientes.Text).NumeroTarjeta
        txtFechaCaducidad.Text = ClientesRestaurante(cboClientes.Text).FechaCaducidad
        lblInvisible()
    End Sub

    'Esconde los lebels de los text box
    Private Sub lblInvisible()
        lblPHNombre.Visible = False
        lblPHContraseña.Visible = False
        lblPHRepetirContraseña.Visible = False
        lblPHEmail.Visible = False
        lblPHNumeroTarjeta.Visible = False
        lblPHFechaCaducidad.Visible = False
    End Sub

End Class